home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 35 / Amiga Format AFCD35 (Issue 119, Jan 1999).iso / -in_the_mag- / reader_requests / fredobbutils / bbsrc / fredbbintro3.s < prev    next >
Text File  |  1998-11-06  |  5KB  |  286 lines

  1. *** BootBlock Intro 3 par Frédo!
  2. * affiche un message en tapant lettre par lettre
  3. * (cf. INFECT bootblock intro)
  4.  
  5. * another simpler one...
  6.  
  7.     incdir    asm:/Include/
  8.     include    equ.s
  9.     include    exec/types.i
  10.     include    graphics/text.i
  11.     include    graphics/gfx.i
  12.     include    graphics/rastport.i
  13.  
  14.     rsreset
  15. planes    rs.l    1
  16. ;gfxbase    rs.l    1
  17. olddma    rs.w    1
  18. ;xstart    rs.w    1
  19. ;ystart    rs.w    1
  20. scrw    rs.w    1
  21. scrh    rs.w    1
  22. charw    rs.w    1
  23. charh    rs.w    1
  24. xc    rs.w    1
  25. yc    rs.w    1
  26. rast    rs.b    rp_SIZEOF
  27. bmap    rs.b    bm_SIZEOF
  28. txtptr    rs.b    2
  29. VARSIZE    rs.w    0
  30.  
  31. WIDTH=320*1
  32. HEIGHT=256
  33. DEPTH=1
  34. PLSIZE=(WIDTH/8)*HEIGHT
  35. PLANESIZE=PLSIZE*DEPTH
  36.  
  37. COL0=$666
  38. COL1=$f77
  39. COL2=$66d
  40. COL3=$777
  41.  
  42. ;DBUG=0
  43.  
  44. Start:
  45.     IFND    DBUG
  46.     dc.b    "DOS",1
  47.     dc.l    0,$370
  48.     ENDC
  49. Main:
  50.     movem.l    d0-a6,-(sp)
  51.     lea    -VARSIZE(sp),sp    ;on utilise la pile comme base des variables
  52.     move.l    sp,a5        ;VarBase en a5
  53.  
  54.     IFD    DBUG
  55.     move.l    4.w,a6
  56.     ENDC
  57. ;    jsr    Forbid(a6)
  58.  
  59. * Allouer buffer pour les bitplanes & copperlist
  60.     move.l    #BUFSIZE,d0
  61.     move.l    #$10002,d1
  62.     jsr    AllocMem(a6)
  63.     move.l    d0,planes(a5)
  64.     beq.w    fin
  65.     move.l    d0,d4
  66.  
  67.     lea    rast(a5),a1
  68.     move.l    a1,-(sp)
  69.     move.l    $9c(a6),a6    ;execbase->gfxbase
  70.     jsr    InitRastPort(a6)
  71.  
  72.     lea    bmap(a5),a0
  73.     move.l    a0,-(sp)
  74. * adresse des bitplanes
  75. ;    lea    bm_Planes(a0),a0
  76.     addq.l    #8,a0
  77. ;    moveq    #DEPTH-1,d0
  78. .pl    move.l    d4,(a0)+
  79. ;    add    #PLSIZE,d4
  80. ;    dbf    d0,.pl
  81. ;    move.l    d4,bm_Planes+4(a0)
  82.     move.l    (sp)+,a0
  83.     move.l    (sp)+,a1
  84.     move.l    a0,rp_BitMap(a1)
  85.     moveq    #DEPTH,d0
  86.     move    #WIDTH,d1
  87.     move    #HEIGHT,d2
  88.     movem    d1-d2,scrw(a5)
  89.     jsr    InitBitMap(a6)
  90.  
  91.     lea    rast(a5),a1
  92.     move.l    a1,a3
  93.     moveq    #1,d0
  94.     jsr    SetAPen(a6)
  95.     move.l    a3,a1
  96.     moveq    #0,d0
  97.     jsr    SetDrMd(a6)
  98.  
  99.     lea    topaz8(pc),a0
  100.     move.l    154(a6),a1    ;gfxbase->defaultfont
  101.     move.l    10(a1),(a0)    ;node name->font name
  102.     jsr    OpenFont(a6)
  103.     move.l    d0,-(sp)
  104.     move.l    d0,a1
  105.     move    tf_XSize(a1),charw(a5)
  106.     move    tf_YSize(a1),charh(a5)
  107.     jsr    CloseFont(a6)
  108.     move.l    a3,a1
  109.     move.l    (sp)+,a0
  110.     jsr    SetFont(a6)
  111.     move.l    a3,a1
  112.     moveq    #FSF_BOLD,d0
  113. ;    moveq    #0,d0
  114.     move.l    d0,d1
  115.     jsr    -90(a6)        ;SetSoftStyle()
  116. .nofont
  117.     lea    $dff000,a4
  118.     move    2(a4),olddma(a5)
  119.     or    #$8000,olddma(a5)
  120.     move    #$7fff,$96(a4)    ;dma off
  121.     lea    coplist(pc),a1
  122. * adresse des bitplanes
  123.     move.l    planes(a5),d0
  124.     move.l    d0,a2
  125.     move    d0,lo1-coplist(a1)
  126.     swap    d0
  127.     move    d0,hi1-coplist(a1)
  128. ;    lea    PLSIZE(a2),a2
  129. ;    move.l    a2,d0
  130. ;    move    d0,lo2-coplist(a1)
  131. ;    swap    d0
  132. ;    move    d0,hi2-coplist(a1)
  133. * copier copperlist ds buffer
  134.     lea    PLSIZE(a2),a2
  135.     move.l    a2,a3
  136.     moveq    #(COPSIZE/4)-1,d0
  137. .copy
  138.     move.l    (a1)+,(a2)+
  139.     dbf    d0,.copy
  140.  
  141.     move.l    a3,$80(a4)
  142.     clr    $88(a4)
  143.     move    #%1000001111000000,$96(a4)    ;mon dma
  144.  
  145.     lea    intro.txt(pc),a3
  146.     moveq    #0,d0
  147.     moveq    #10,d1
  148.     movem    d0-d1,xc(a5)
  149. loop:
  150.     btst    #6,$bfe001
  151.     beq.s    closeall
  152.  
  153.     move.b    (a3)+,d7
  154.     beq.s    .end_of_txt
  155.     cmp.b    #$a,d7
  156.     beq.s    .lf
  157. .ty
  158.     lea    rast(a5),a1
  159.     movem    xc(a5),d0-d1
  160.     move    d0,d2
  161.     add    charw(a5),d2
  162.     move    d2,xc(a5)
  163.     jsr    Move(a6)
  164.     lea    txtptr(a5),a0
  165.     move.b    d7,(a0)
  166.     lea    rast(a5),a1
  167.     moveq    #1,d0
  168.     jsr    Text(a6)
  169.  
  170.     jsr    WaitTOF(a6)
  171.  
  172.     bra.s    loop
  173.  
  174. .lf    clr    xc(a5)
  175.     move    charh(a5),d0
  176.     add    yc(a5),d0
  177.     move    d0,yc(a5)
  178.     bra.s    loop
  179. .end_of_txt
  180.     subq.l    #1,a3
  181.     bra.s    loop
  182.  
  183. closeall
  184.     move.l    planes(a5),a1
  185.     move.l    #BUFSIZE,d0
  186.     move.l    4.w,a6
  187.     jsr    FreeMem(a6)
  188. restore
  189. ;    move    #$7fff,$96(a4)
  190.     move.l    $9c(a6),a0
  191.     move.l    38(a0),$80(a4)
  192.     clr    $88(a4)
  193.     move    olddma(a5),$96(a4)
  194. ;    jsr    permit(a6)
  195. fin
  196.     lea    VARSIZE(sp),sp    ;restitue la pile
  197.     movem.l    (sp)+,d0-a6
  198.  
  199. Init
  200. ;    lea    expansion.name(pc),a1
  201. ;    moveq    #37,d0
  202.     IFD    DBUG
  203.     move.l    4.w,a6
  204.     ENDC
  205. ;    jsr    -552(a6)
  206. ;    tst.l    d0
  207. ;    beq.b    .err
  208. ;    move.l    d0,a1
  209. ;    bset    #6,34(a1)
  210. ;    jsr    -414(a6)
  211. .err    lea    dos.name(pc),a1
  212.     jsr    -96(a6)
  213.     tst.l    d0
  214.     beq.b    .nodos
  215.     move.l    d0,a0
  216.     move.l    22(a0),a0
  217.     moveq    #0,d0
  218.     rts
  219. .nodos    moveq    #-1,d0
  220.     rts
  221.  
  222. *** Effacer l'écran
  223. ;ClrSc
  224. ;    movem.l    d0-a6,-(sp)
  225. ;    lea    rast(a5),a1
  226. ;    move.l    gfxbase(a5),a6
  227. ;    jsr    ClearScreen(a6)
  228. ;    movem.l    (sp)+,d0-a6
  229. ;    rts
  230.  
  231. *** DATA
  232. LORES=%0001001000000000        ;ajuster le nbre de bitplanes
  233. HIRES=LORES!$8000
  234. LACE=4
  235.  
  236. coplist:
  237.  DC.w $0100,LORES
  238.  dc.w $0102,0
  239.  dc.w $0108,0
  240.  dc.w $008E,$2981
  241.  DC.w $0090,$29c1
  242.  dc.w $0092,$38
  243.  DC.w $0094,$D0
  244.  DC.w $0180,COL0
  245.  dc.w $0182,COL1
  246. ; dc.w $0184,COL2
  247. ; dc.w $0186,COL3
  248.  dc.w $e0
  249. hi1:dc.w 0
  250.  dc.w $e2
  251. lo1:dc.w 0
  252. ; dc.w $e4
  253. ;hi2:dc.w 0
  254. ; dc.w $e6
  255. ;lo2:dc.w 0
  256.  
  257.  dc.w $FFFF,$FFFE    ;fin de la liste copper
  258. COPSIZE=*-coplist
  259. BUFSIZE=PLANESIZE+COPSIZE
  260.  
  261. topaz8    dc.l    0
  262.     dc.w    8
  263.     dc.b    0
  264.     dc.b    0
  265.  
  266. dos.name    dc.b    'dos.library',0
  267. ;expansion.name    dc.b    'expansion.library',0
  268.  
  269. intro.txt
  270.  DC.B "________________________________________",$A,$a
  271.  dc.b "FREDO'S BACK AGAIN WIZ ANOTHER BOOTINTRO",$A,$a
  272.  DC.B "     THIS IS BOOTINTRO NUMBER 3",$A,$a
  273.  dc.b "THIS LITTLE THINGY USES A FUNNY",$a
  274.  dc.b "TEXT-TYPING ROUTINE, AS YOU CAN SEE...",$A
  275.  dc.b "YOU CAN WRITE A QUITE LONG TEXT.",$A,$a
  276.  DC.B "PLEASE DON'T FORGET...",$A
  277.  DC.B "MY MOTTO IS: «SIMPLE BUT EFFICIENT!!»",$A
  278.  dc.b "NOW THINGS ARE CLEAR!",$A
  279.  DC.B "WATCH OUT FOR MORE BOOTBLOCK INTROS",$A
  280.  DC.B "FROM THE MAD CODE OPTIMIZER - FREDO!",$A,$a
  281.  DC.B "________________________________________",$A
  282.  dc.b 0
  283.  
  284. End:
  285.     dcb.b    512,0
  286.